<?php

class EnderecoModel extends GenericModel{

	public function __construct(){
		$this->setTableName('tb_endereco');
		parent::__construct();
	}

	public function buscarEnderecosPorUsuario($idUsuario, $tipoUsuario = 'c'){
		$querySql = "SELECT 
						   e.id, 
					       e.nome, 
					       e.cep, 
					       e.ufe_sg, 
					       l.loc_no cidade, 
					       b.bai_no bairro, 
					       e.logradouro, 
					       e.numero, 
					       e.complemento, 
					       e.latitude, 
					       e.longitude, 
					       e.principal, 
					       l.loc_nu, 
					       b.bai_nu, 
					       e.telefone 
					 FROM   
						   tb_endereco e 
					       INNER JOIN LOG_LOCALIDADE l ON e.loc_nu = l.loc_nu 
					       INNER JOIN LOG_BAIRRO b ON e.bai_nu = b.bai_nu 
					 WHERE  
							 e.tipo_endereco = ?
							 AND e.ativo = 1 
							 AND e.id_cliente_restaurante = ? 
					 ORDER  
							 BY e.nome ASC";
		return $this->query($querySql, array($tipoUsuario, $idUsuario));
	}
	
	public function buscarEnderecosPrincipal($idUsuario, $tipoUsuario = 'c'){
		$querySql = "SELECT
							   e.id, 
						       e.nome, 
						       e.cep, 
						       e.ufe_sg, 
						       l.loc_no cidade, 
						       b.bai_no bairro, 
						       e.logradouro, 
						       e.numero, 
						       e.complemento, 
						       e.latitude, 
						       e.longitude, 
						       e.principal, 
						       l.loc_nu, 
						       b.bai_nu, 
						       e.telefone 
						 FROM   
								 tb_endereco e 
						       INNER JOIN LOG_LOCALIDADE l ON e.loc_nu = l.loc_nu 
						       INNER JOIN LOG_BAIRRO b ON e.bai_nu = b.bai_nu 
						 WHERE  
								 e.tipo_endereco = ? 
								 AND e.ativo = 1 
								 AND e.id_cliente_restaurante = ? 
								 AND e.principal = 1 
						 ORDER  
								 BY e.nome ASC";
		return $this->query($querySql, array($tipoUsuario, $idUsuario), TRUE);
	}

	public function enderecoPadrao($idUsuario, $idEndereco){
		try{
			$this->transaction();
			$querySql = "UPDATE tb_endereco SET principal = 0 WHERE id_cliente_restaurante = ? AND tipo_endereco = 'c' AND principal = 1";

			$this->execute($querySql, array($idUsuario));
			$querySql = "UPDATE tb_endereco SET principal = 1 WHERE id_cliente_restaurante = ? AND tipo_endereco = 'c' AND id = ?";
			$this->execute($querySql, array($idUsuario, $idEndereco));
			$this->commit();
		}
		catch (PDOException $e){
			$this->rollback();
			echo 'Error: ' . $e;
		}
	}

	public function buscarEndereco($idUsuario, $idEndereco){
		$querySql = "SELECT 
							   e.id, 
						       e.nome, 
						       e.cep, 
						       e.ufe_sg, 
						       l.loc_no cidade, 
						       b.bai_no bairro, 
						       e.logradouro, 
						       e.numero, 
						       e.complemento, 
						       e.latitude, 
						       e.longitude, 
						       e.principal, 
						       l.loc_nu, 
						       b.bai_nu, 
						       e.telefone 
						FROM   
							   tb_endereco e 
						       INNER JOIN LOG_LOCALIDADE l ON e.loc_nu = l.loc_nu 
						       INNER JOIN LOG_BAIRRO b ON e.bai_nu = b.bai_nu 
						WHERE  
							   e.tipo_endereco = 'c' 
						       AND e.ativo = 1 
						       AND e.id_cliente_restaurante = ? 
						       AND e.id = ? 
						ORDER  BY 
							   e.nome ASC";
		
		return $this->query($querySql, array($idUsuario, $idEndereco));
	}
}
?>